package SecondeStage.MianXiangDuiXiang.AbstractClass.ClassMember;

public class StaticMethod {
    public static void main(String[] args) {
       Stu tom= new Stu("汤姆");
       tom.payFee(100);

       Stu mary = new Stu("玛丽");
       mary.payFee(100);

       Stu.showFee();
    }
}

class Stu{
    private String name;
    private int n1=100;
    private static  int n2=200;
    // 定义一个静态变量，来累计学生的学费
    private static double fee=0;

    public Stu(String name) {
        this.name = name;
    }
    // 当方法使用了static方法后，该方法就是静态方法
    // 静态方法就可以访问静态属性了
    // 类方法没有this和super参数
    public static void payFee(double fee){
        Stu.fee+=fee;
    }

    public static void showFee(){
        System.out.println("总学费有:"+Stu.fee);
    }

    public static void hello(){

    }

    public void say(){

    }

    public static void hi(){
        // 类方法中不允许使用和对象有关的关键字，比如this和super
        //System.out.println(this.n1); 报错

        // 类方法中只能访问静态变量或静态方法
        System.out.println(n2); //可以
        //System.out.println(this.n2);// 不能出现this
        //System.out.println(n1); //不可以访问非静态变量
        hello(); //可以访问静态方法
        //say(); //不可以
    }
    // 结论: 静态方法，只能访问静态成员。 非静态方法，可以访问静态成员和非静态成员（但必须遵守访问权限）
}
